10 网址
统一资源标识符(Uniform Resource Identifier)包含 URL 和 URN 两个部分,HTTP 里用的网址实际上是 URL** 统一资源定位符**(Uniform Resource Locator)。
URI 的格式
URI 通常由 scheme、host:port、path 和 query 四个部分组成
URI 的基本组成
- scheme:协议名,表示资源应该使用哪种协议来访问。http、https、ftp、ldap、file、news 等。
- ://:把 scheme 和后面的部分分离开。
- authority:资源所在的主机名,通常的形式是 host:port ,即主机名加端口号。主机名可以是 IP 地址或者域名的形式,必须要有。但端口号有时可以省略,浏览器等客户端会依据 scheme 使用默认的端口号(HTTP 默认端口号是 80,HTTPS 默认端口号是 443)。
- path:标记资源所在位置。URI 的 path 部分必须以“/”开始,即必须包含“/”,可以省略。
http://nginx.org
http://www.test.com:8080/login
https://tools.ietf.org/html/rfc7230
// file 类型 URI 的特例,允许省略主机名,默认是本机 localhost。
file:///D:/nginx/www/
URI 的查询参数
在操作资源的时候附加一些额外的修饰参数。
query:在 path 之后,以 ? 开始,表示对资源附加的额外要求。格式是多个 key=value 的字符串,这些 KV 值用字符 & 连接,浏览器和服务器都可以按照这个格式把长串的查询参数解析成可理解的字典或关联数组形式。
URI 的完整格式
- user:passwd@:身份信息,表示登录主机时的用户名和密码(现在已不推荐使用(RFC7230),它把敏感信息以明文形式暴露出来,存在严重的安全隐患)。
- #fragment:片段标识符,是 URI 所定位的资源内部的一个锚点,浏览器可以在获取资源后直接跳转到它指示的位置。
URI 的编码
URI 引入了编码机制,对于 ASCII 码以外的字符集和特殊字符做一个特殊的操作,把它们转换成与 URI 语义不冲突的形式,俗称转义。
encodeURI 的原理:把字符(unicode)编码成 utf-8,utf-8 是用 1-4 个字节表示的,所以每个字节转换成 16 进制并在前面用百分号(%)连接,最后并把每个字节转换的结果连接起来。